package com.atguigu.lease.common.context;

/**
 * @author Ahmad
 * @date 2024/12/25 21:03
 * @description
 * 把封装了用户信息的LoginUser对象封装在ThreadLocal线程中，这样就可以在任何地方获取到当前登录的用户信息。
 */
public class LoginUserContext {
    //定义一个ThreadLocal对象，用于保存当前线程中的登录用户信息
    private static final ThreadLocal<LoginUser> userThreadLocal = new ThreadLocal<>();

    //保存登录用户信息到线程中
    public static void setLoginUser(LoginUser loginUser) {
        userThreadLocal.set(loginUser);
    }

    //获取当前线程中的登录用户信息
    public static LoginUser getLoginUser() {
        LoginUser loginUser = userThreadLocal.get();
        return loginUser;
    }

    //清除当前线程中的登录用户信息
    public static void clear() {
        userThreadLocal.remove();//需要清除，否则会造成内存泄漏
    }

}